package com.xaslsoft.xaslsoft.device.rfid.usb.factory;


import cn.hutool.cache.impl.TimedCache;
import com.xaslsoft.xaslsoft.device.serial.SerialPortManager;
import gnu.io.SerialPort;
import org.springframework.stereotype.Component;

import java.util.HashSet;
import java.util.Set;

/**
 * usb读写器 工厂
 * @author Administrator
 */
@Component
public interface IUsbFactory extends SerialPortManager.DataAvailableListener {

	/**
	 * 默认缓存标签数据3分种
	 */
	TimedCache<String, Set<String>> TAG_CACHE = new TimedCache<>(3 * 60 * 1000);
	Set<String> TAG_SET = new HashSet<>();
	String KEY_TAG = "KEY_TAG";

	/**
	 * 连接usb端口
	 *
	 * @param portName 端口号
	 * @param baud     波特率
	 */
	SerialPort connect(String portName, int baud);


	/**
	 * 发送数据
	 *
	 * @param hexStr
	 */
	void sendData(String hexStr);

	/**
	 * 开始读
	 */
	boolean startRead();

	/**
	 * 开始写
	 */
	boolean startWrite();


	/**
	 * 停止读
	 */
	boolean stopRead();

	/**
	 * 监听数据回调
	 */
	Set<String> onReceiveData(String hex);


}
